1. Field of the Invention
The present invention relates to the field of software application delivery. More particularly, the present invention relates to dynamically partitioning a software application and delivering application components to a requesting client device.
2. Background Information
A need exists to ensure that software applications are dynamically partitioned and delivered to a client device according to the profile constraints of the client device. Presently, many web-based software applications are readily available by request over the interne. However, web-based software applications are presently written with static partitioning and delivery rules. For example, an application author may write an application so that a presentation layer of a web-based software application is delivered to the client device while interaction, business objects and data layers are retained at an application server. However, the application is partitioned without regard to the particular constraints of the requesting client device because the partitioning of the presentation layer from the interaction, business objects and data layers is predetermined by the application author. For example, even if the interaction layer of a client device could be supported by the requesting client device, there is no mechanism for dynamically partitioning the interaction layer and delivering the interaction layer to the client device.
As a result of the previous inability to dynamically partition and deliver an application, an application author is motivated to provide a primitive application to ensure the application can be delivered to the greatest number of client devices. For example, a primitive application may be authored with a primitive application user interface so as to be available to a wide variety of devices. Additionally, an application author may provide an application that requires continuous network connectivity so as to make the application available to the greatest number of client devices by supporting the layers of the application, e.g., the interaction layer, the business objects layer and/or the data layer, at an application server.
However, many existing client devices are capable of supporting complex application layer components. For example, many traditional personal computers (PCs) can support a rich user interface for a software program. Additionally, many existing client devices are capable of supporting the interaction, business objects and/or data layers of an application without needing continuous network connectivity.
Accordingly, a need exists to dynamically determine the appropriate partitioning of a software application according to a profile of the requesting client device. A need exists for an ability to select components for delivery to a client device according to the partitioning determination. Additionally, a need exists to deliver the selected application components to a requesting client device.
To solve the above-described problems, an application delivery system and method is provided to deliver dynamically partitioned software application components to a requesting client device.